/**
 * Trie接口
 */
export interface ITrie {
    size(): number // 单词数量
    isEmpty(): boolean // 是否为空
    clear(): void // 清空
    contains(str: string): boolean // 是否有该单词
    add(str: string): boolean;
    remove(str: string): void // 删除该单词
    starsWith(prefix: string): boolean // 是否有以prefxi为前缀的单词
}

/**
 * 节点存的单个字符信息
 */
export class Node {
    char: string // 单个字符
    children: IChildren = {}  // 孩子
    parent: Node | null // 父亲
    word: boolean = false // 是不是完整的单词
    value: string = '' // 完整的单词
    constructor(char = '', parent: Node | null) {
        this.char = char;
        this.parent = parent
    }

}

export type IChildren = Record<string, Node>